package com.jacky.双指针;

public class 接雨水_42 {

    public int trap(int[] height) {
        if(height== null || height.length==0) return 0;
        //定义变量，表示接到雨水量
        int sum=0;
        //定义左指针和右指针
        int left=0,right=height.length-1;
        //定义好左边最高和右边最高
        int leftMax=0,rigthMax=0;
        while(left < right){
            //获得左边最高柱子
            leftMax = Math.max(leftMax,height[left]);
            //获得右边最高柱子
            rigthMax = Math.max(rigthMax,height[right]);
            //如果左边高度小于右边高度
            if(leftMax < rigthMax){
                //用左边最高和右边最高相比，比较小的值-柱子自身高度
                sum += leftMax-height[left];
                left++;
            }else{
                //用左边最高和右边最高相比，比较小的值-柱子自身高度
                sum += rigthMax-height[right];
                right--;
            }
        }
        return sum;
    }
}
